変数を使用して多数のコマンドを実行するコマンド ライン (unix/linux) 命令を作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/74886

  •  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") スクリプトの他の場所で。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top