
私が使用しているPythonプログラムに必要な出力を提供するこのgitスクリプトがあります。問題は、スクリプトを使用する必要があるDebian 7システムでスクリプトが機能しないことです。しかし、私のManjaro PCでは問題なく実行されます。
#!/bin/bash
branch=$1
if [[ -n "$branch" ]]; then
format=Author:%x09%an
format+=%x0aDate:%x09%ad
format+=%x0aRefs:%x09%d
format+=%x0a%x0a'%w(,4)%s'
format+=%x0a%x0a'%w(,4,4)%b'
git rev-list --pretty="$format" $branch
else
echo "argument error"
fi
私は直接コマンドを入力しても動作します。
誰でもこの問題を解決するのに役立ちますか?
編集:私が得る最初のエラーは2 [[。これを変更すると、すべての行if [ -n "$branch" ];
に対して「見つかりません」エラーが発生する型宣言が続行されます。ただし、git rev-listコマンドは機能しますが、パラメータがないため失敗します。
編集2:bash [script]
代わりにスクリプトを実行するとsh [script]
問題が解決します!私のManajaroコンピュータでなぜ動作するのかまだ疑問に思いますsh
。
答え1
sh
Manjaroインストールのシェルが構文または変数値に追加するために使用される構文をdash
理解できない場合があります。[[ ... ]]
+=
sh
これは、使用する代わりにスクリプトを実行するとスクリプトの特定の行が正しく実行されない理由を説明しますbash
。
#!
これを軽減するには、ハッシュバンクライン()が正しいパスを指していることを確認し、bash
スクリプトを実行可能にしますchmod +x scriptname.sh
。これにより、eg./scriptname.sh
を使用するように明示的に指示することなく、egを使用してスクリプトを実行できますbash
。