パス/home/myUsername/.local/share/nemo/scripts/Folder with spaces/
のNemoで4つのファイルを選択します。 Nemoは、ファイルパスを環境変数NEMO_SCRIPT_SELECTED_FILE_PATHS
に保存します。
(以下のglenn jackman
からの回答でわかるように、NEMO_SCRIPT_SELECTED_FILE_PATHS
には改行で区切られたファイルパスのリストが含まれています。)
なんで「うん!」すべてのファイルパス行の後に印刷されませんか?どうすればそれを達成できますか? (このファイルパスのリストは配列であると最初は思っていたので、この質問はおそらく苛立たしいものですが、明らかにそうではありません。)
[〜#〜] script [〜#〜]
#!/bin/bash
for i in "${NEMO_SCRIPT_SELECTED_FILE_PATHS[@]}"
do
echo "$i"
echo "Yeah!"
done
[〜#〜] output [〜#〜]
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script1
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script2
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script3
/home/myUsername/.local/share/nemo/scripts/Folder with spaces/script4
Yeah!
仮定:
$NEMO_SCRIPT_SELECTED_FILE_PATHS
はどういうわけか、nemoによって魔法のように設定されています。次のように解析してbash配列にすることができます。
$ NEMO_SCRIPT_SELECTED_FILE_PATHS="file one
file two
file three"
$ mapfile -t files <<<"$NEMO_SCRIPT_SELECTED_FILE_PATHS"
$ echo ${#files[@]}
3
$ printf ">>%s\n" "${files[@]}"
>>file one
>>file two
>>file three
mapfile
は、標準入力を読み取り、改行で分割し、名前付き配列に行を格納するbash組み込みコマンドです。
ファイル名のいずれかに改行(正当なファイル名文字)が含まれている場合、これは壊れます。