変数を使用して多数のコマンドを実行するコマンド ライン (unix/linux) 命令を作成するにはどうすればよいですか?
-
09-06-2019 - |
質問
さまざまなディレクトリ内の一部のコンテンツを再配置する必要がありますが、少し面倒です。作業中のアプリケーション (Ruby アプリ) をデバッグするには、Gem を一度に 1 つずつ gem フォルダーに移動する必要があります (長い話です。一言で言えば:1つは壊れていて、どれかわかりません)。
したがって、次のようなことをする必要があります:
sudo mv backup/gem/foo gem/
sudo mv backup/doc/foo doc/
sudo mv backup/specification/foo.gemspec specification/
毎回「foo」を置き換えます。次のようなことを可能にする単純なシェル スクリプトを作成するにはどうすればよいですか:gemMove("foo") と空白を埋めてくれますか?
解決
以下を gemmove という名前のファイルに記述します。
#!/bin/bash
foo=$1
if [ x$foo == x ]; then
echo "Must have an arg"
exit 1
fi
for d in gem doc specification ; do
mv backup/$d/$1 $d
done
それからやります
chmod a+x gemmove
次に、「sudo gemmove foo」を呼び出して、foo gemをバックアップディレクトリから実際のディレクトリに移動します
他のヒント
次のように、bash シェル引数を単純に使用できます。
#!/bin/bash
# This is move.sh
mv backup/gem/$1 gem/
mv backup/doc/$1 doc/
# ...
そしてそれを次のように実行します。
sudo ./move.sh foo
必ずスクリプトを実行可能にしてください。
chmod +x move.sh
bash では、次のようなものになります。
function gemMove()
{
filename=$1
mv backup/gem/$filename gem/$filename
mv backup/doc/$filename doc/$filename
mv backup/specification/$filename.spec specification
}
それなら電話するだけです gemMove("foo")
スクリプトの他の場所で。
所属していません StackOverflow