置換後のコマンドへの引数の提供

置換後のコマンドへの引数の提供

~/Picturesフォルダからファイル名を取得し、コマンドの引数として指定したいと思いますnomacs。ファイル名にスペースが含まれているので、Bash置換を使用してスペースをエスケープします(フォルダの最後のファイルもインポートしたい)。

パスワード:

names=$(\ls ~/Pictures * | tac) 
SAVEIFS=$IFS
IFS=$'\n'
names=($names)
IFS=$SAVEIFS
screenshot=~/Pictures/${names[0]}
screenshot=${screenshot// /\\ }
nomacs $screenshot

ファイル名の例:Screenshot from 2017-09-13 18-05-42.png

問題はこれがうまくnomacs $screenshotいかないことですが、実行してみるとnomacs Screenshot\ from\ 2017-09-13 18-05-42.png期待どおりに動作します。

スペースを脱出するには、特別なBash技術を使用する必要がありますか?

ベストアンサー1

あなたのスクリプトから収集した内容によれば、最初の項目の出力を反転してls最初の項目を選択します。 Bashを使用してこれを行うもう1つの方法は次のとおりです。

files=(~/Pictures/*)
nomacs "${files[-1]}"

これにより、グローバル拡張で配列が埋められ、~/Pictures/*最後の要素がnomacsプログラムに渡されます。

おすすめ記事