プロが教えるわが家の防犯対策術!

以下のシェルスクリプトで、スクリプトへの第1引数が指定されていなかったら
「~/tmp」が変数targetに収められるのですが、

#!/usr/local/bin/bash
target=$1         ①
echo ${target:=~/tmp}   ②
echo $target

ある本に、
target${1:=~/tmp}
で書けると書いてあってうまくいかないのですが、(恐らく何処かがミスプリだと思われます。)
①と②を一つで書く書きかたってあるのでしょうか?

A 回答 (1件)

たぶん


target=${1:-~/tmp}
でしょう。

https://linuxjm.osdn.jp/html/GNU_bash/man1/bash. …
より

${parameter:-word}
デフォルトの値を使います。
parameter が設定されていないか空文字列であれば、 word を展開したものに置換されます。
そうでなければ、 parameter の値に置換されます。

${parameter:=word}
デフォルトの値を代入します。
parameter が設定されていないか空文字列であれば、 word を展開したものが parameter に代入されます。
それから parameter の値への置換が行われます。
位置パラメータや特殊パラメータへの代入をこのように行うことはできません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2022/08/12 19:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!