単語/文字列と数字を受け取り、単語内の文字の位置をその数字だけシフトして、オーバーフローを最初に戻すコマンド/関数、できればbashが必要です。
たとえば、入力を使用するstackと2、出力は次のようになりますcksta
使用することを考えましtrたが、ターゲットの単語から特定の文字を翻訳するだけでなく、どの単語でも機能するように一般化する方法を完全に理解できませんでした。
単語/文字列と数字を受け取り、単語内の文字の位置をその数字だけシフトして、オーバーフローを最初に戻すコマンド/関数、できればbashが必要です。
たとえば、入力を使用するstackと2、出力は次のようになりますcksta
使用することを考えましtrたが、ターゲットの単語から特定の文字を翻訳するだけでなく、どの単語でも機能するように一般化する方法を完全に理解できませんでした。
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
もう 1 つの一般的な方法は、文字列を「2 倍」にすることです。これにより、部分文字列が単純化されます。
str=stack
len=${#str}
n=2
strstr=$str$str
echo ${strstr:$len-$n:$len} # -> cksta
少し短いのは、右から数えるための負の値の使用法です。
string=$1
shift=$2
length=${#string}
echo ${string: -shift}${string:0:length-shift}
:- には独自の意味があるため、前に空白を入れる必要があります。