シェルスクリプトで変数を別の変数にコピーするにはどうすればよいですか?
ユーザーが を渡したとすると、$1
その値を別の変数にコピーするにはどうすればよいでしょうか?
だいたいこんな感じになると思います...
cp $1 $2
echo "Copied value: $2"
まずcp
、ファイルとディレクトリのみをコピーするためのものです(manページに記載されているように)
次に、引数変数 ($0..$1..$n) に代入することはできません。これらは読み取り専用です。
代わりにこれを行うことができます:
input2=$1
$1
の値を新しい変数にコピーします。$input2
val=$1
echo "Copied Value : $val"
cp
ファイルのコピーに使用しています。
使うだけ
v=$1
そしてそれをエコーします:
echo "Copied Variable: $v"
set -- は、位置パラメータを設定するための非常に便利なコマンドであることがわかりました。たとえば、あなたが与えた例では、よく答えられています:
cp file1 file2
「file1」を「file2」にコピーします。いくつかのファイルを扱うときは、代わりに次のようにします。
set -- file1 file2
cp $1 $2
変数の名前を逆にしたい場合:
set -- $2 $1 # puts the current "$2" value in "$1", and vice versa, then
cp $1 $2 # copies what was file2 contents back to file1.
すでに見た「名前付き」変数を使用せずにこれを行います。私のより一般的な使い方は次のようなものです:
set -- ${1%.txt} # strips a ".txt" suffix
set -- $1 $1.out $1.err # sets 2nd to <whatever>.out and 3rd to <whatever>.err, so
cmd $1.txt > $2 2>$3 # puts stdout in ...out and stderr in ...err
v