次のような非常に短いBashスクリプトがあります。
variable="3 things"
if $(echo $variable|grep "^[0-9]\{1,\}") #if $variable begins with [0-9]
then
echo $(echo $variable|sed 's/ .*$//')
else
echo "0"
fi
$variable
結局のところ、コマンドの出力は数字または「いいえ」という単語で始まる文字列になります。スクリプトに数字のみを返し、そうでない場合は数字0を返します。
エラーが発生し、script.bash: line 2: 3: command not found
bashがコマンド「3」を実行しようとしている理由を理解できません。どんな洞察力にも感謝します(またはこれを書くためのより良い方法の提案 - 私はbashスクリプトに精通していません)。
ありがとう
ベストアンサー1
この試み:
variable="3 things"
if echo "$variable" | grep "^[0-9]\{1,\}" >/dev/null 2>&1 #if $variable begins with [0-9]
then
echo "$variable" | sed 's/ .*$//'
else
echo "0"
fi
この$(...)
シンボルを使用すると、内部コマンドを実行し、そのコマンドの出力をその場所に配置します。このコマンドはif
このコマンドの出力を実行し、成功したことを確認します。この場合、実際には$(...)
。