1

単語/文字列と数字を受け取り、単語内の文字の位置をその数字だけシフトして、オーバーフローを最初に戻すコマンド/関数、できればbashが必要です。

たとえば、入力を使用するstack2、出力は次のようになりますcksta

使用することを考えましtrたが、ターゲットの単語から特定の文字を翻訳するだけでなく、どの単語でも機能するように一般化する方法を完全に理解できませんでした。

4

3 に答える 3

5

bashの組み込み文字列操作を使用できます。

#!/bin/bash

string=$1
shift=$2

length=${#string}
echo ${string:$length-$shift:$shift}${string:0:$length-$shift}

例:

$ ./script stack 1
kstac
$ ./script stack 2
cksta
$ ./script stack 3
ackst
$ ./script stack 4
tacks
于 2011-08-21T17:19:27.870 に答える
2

もう 1 つの一般的な方法は、文字列を「2 倍」にすることです。これにより、部分文字列が単純化されます。

str=stack
len=${#str}
n=2
strstr=$str$str
echo ${strstr:$len-$n:$len}   # -> cksta
于 2011-08-21T23:37:10.977 に答える
0

少し短いのは、右から数えるための負の値の使用法です。

string=$1
shift=$2
length=${#string}
echo ${string: -shift}${string:0:length-shift}

:- には独自の意味があるため、前に空白を入れる必要があります。

于 2011-08-21T17:57:42.587 に答える