私は、ファイルの名前を使って/ tmp /に新しいフォルダを作成して、そのフォルダの中にファイルをコピーするためにbashスクリプトに取り組んでいます。bashスクリプトのベースネームにスペースが含まれていますか?
#!/bin/bash
MYBASENAME="`basename $1`"
mkdir "/tmp/$MYBASENAME"
for ARG in "[email protected]"
do
mv "$ARG" "/tmp/$MYBASENAME"
done
行動:私はmymove "/home/me/downloads/my new file.zip"
を入力すると
が、それはこの例を示します
mkdir /tmp/my
new
file.zip
mv: rename /home/me/downloads/my new file.zip to /tmp/my\nnew\nfile.zip:
私はすべての周りの引用符がたくさんあるので、これは期待通りに動作しない理由を私は理解していません。
また、複数のファイルがある場合には、そこにフォームループがあります。最初の引数のベース名に基づいて、それらをすべて同じフォルダにコピーします。
多くのデフォルトシェルスクリプトはbashではなくshを使用しています。新しい行を表示しないように 'echo \ c'のようなものを除いて、私はまだ違いをあまり伝えられません。ヒントと役に立つ答えをありがとう。 – cwd
echo \ cを使用する移植可能な方法は、 'printf'を使うことです。書式文字列で' \ n'を省略するだけです。最も頻繁に使われるbashismは、配列変数、テスト用に '[[...]]'のような非POSIX構文、 'for((...)) 'を持つループ、' select'構造体。 – Jens
これは、結果は何ですか?動作しません正確にどのようなrjha94 @(1)-release(x86_64版 - アップル-darwin11) – rjha94