0
コマンドを実行するときに変数に定義されたいくつかの引数を使いたいと思います。空白を持つ変数から引数を渡す
私はある目的地から別の目的地にファイルをコピーしたいと思いますし、変数を使ってcpの引数を指定します。私はスペースで引数を使用する場合しかし、私はそれを動作させることはできません
execve("/bin/cp", ["cp", "file1", "file2"]
:
#!/bin/sh
ARGS="file1 file2"
cp $ARGS
straceのは、以下の期待の解釈を示しています。引数に空白が含まれていないときには正常に動作します。私は、エスケープ引用符や他の多くのもので、各引数を入れて試してみたが、それは個々の引数として解釈されます。
#!/bin/sh
ARGS="\"file1\" \"file2\""
cp $ARGS
結果は二つの引数が、4ではない。物事を複雑にする
execve("/bin/cp", ["cp", "\"file", "1\"", "\"file", "2\""]
さらに私の最終的な目標は、指定されたARGS変数内で変数の置換を使用することですが、どのように動作させるのですか?次のことを考えてみましょう:
FILENAME1="Picture 1.jpg"
FILENAME2="Picture 2.jpg"
ARGS="$FILENAME1 $FILENAME1"
cp $ARGS
それは四つの引数になり:
execve("/bin/cp", ["cp", "Picture", "1.jpg", "Picture", "1.jpg"]
ありがとうございました。これはもう一つの難しさを明らかにします。私はこれを複数のスクリプトに渡す必要があります。私の引数リストを含む単一のパラメータは1つのスクリプトに組み込まれ、これらの引数をとるコマンドを実行するスクリプトに渡されます。 単一のパラメータの代わりに配列を渡すにはどうすればよいですか? –
できません。 '' $ {args [@]} ''は個々の単語のシーケンスに単純に展開され、それぞれ個別の引数を構成します。 2つのスクリプト間のインターフェースを再設計する必要があるかもしれません。 – chepner
説明をありがとう。私はこの問題に関する別の質問を作成します:) –