
次の bash スクリプトは動作しません。1582 年 10 月 14 日からの日数に応じて日付を計算する必要があります。引数は日数になります。
d="$1"
date -d '14 Oct 1582 + "$d" days'
例えばコマンド
./datedays.sh 154748
与えるべき
Wed Jun 21 00:00:00 BST 2006
代わりにエラーが発生します
date: invalid date ‘14 Oct 1582 + "$d" days’
答え1
一重引用符ではなく二重引用符を使用する必要があります。
date -d "14 Oct 1582 + $d days"
答え2
スクリプトでは強い引用符 (一重引用符) を使用しています。強い引用符を使用すると、一重引用符内の引用符以外の内容が解釈されなくなります。
一重引用符で囲むと、スクリプト内の $ の特別な意味が無効になります。
#!/bin/bash
echo "$PATH"
うまくいきました!
#!/bin/bash
echo '$PATH'
動作しません。出力は入力と同じままです