
次のスクリプトでbash履歴修飾子を使用できる場合はどうなりますか?
!$:h
ファイルのパスを取得します。
スクリプトで使用できる方法はありますか?例えば${1:h}
答え1
csh
これらの履歴修飾子は、機能が派生する変数にも適用できます。
ただし、bash
そのセクションをコピーしないように選択してください。zsh
しかし、それは。ここでは以下をzsh
使用できますbash
。
$ file=foo/bar/
$ echo $file:h # (or ${file:h})
foo
zsh
(この例は、実際にどの改善がcsh
返されるかを示すために選択されましたfoo/bar
。また、他の多くの有用な修飾子もサポートしています。)
他のシェルでは常に次のものを使用できますdirname
。
$ dir=$(dirname -- "$file")
$ echo "$dir"
foo
(ただし、改行文字で終わるディレクトリ名では正しく動作しません。)
bash
他のPOSIXシェルと同様に使用することができますが、またはなどの一部の特殊なケースでは、予期しない結果が${file%/*}
発生する可能性があります。foo/bar/
foo
/