sta*_*low 4 bash nautilus array nemo
我在路径中选择了 Nemo 中的 4 个文件/home/myUsername/.local/share/nemo/scripts/Folder with spaces/
。Nemo 将文件路径存储在环境变量中NEMO_SCRIPT_SELECTED_FILE_PATHS
。
(正如您在glenn jackman
下面的答案中所见,NEMO_SCRIPT_SELECTED_FILE_PATHS
包含一个以换行符分隔的文件路径列表。)
为什么是“是啊!” 不是在每个文件路径行之后打印?我怎样才能做到这一点?(这个问题可能很烦人,因为我最初认为这个文件路径列表是一个数组,但显然不是。)
脚本
#!/bin/bash
for i in "${NEMO_SCRIPT_SELECTED_FILE_PATHS[@]}"
do
echo "$i"
echo "Yeah!"
done
Run Code Online (Sandbox Code Playgroud)
输出
/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!
Run Code Online (Sandbox Code Playgroud)
假设:
$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
Run Code Online (Sandbox Code Playgroud)
mapfile
是一个 bash 内置命令,它读取标准输入、在换行符上拆分并将行存储在命名数组中。
如果您的任何文件名包含换行符(这是合法的文件名字符),则会中断。
归档时间: |
|
查看次数: |
711 次 |
最近记录: |