我是新来的,并且加入了关于脚本的问题(第一个答案是如何在 Nautilus 中禁用“提取成功完成”对话框?)并且无法在其下方“评论”(没有声誉)并通过 Answer 发布它没有t 似乎是对的。
所以问题是关于使用两位数,或者更好的是,在脚本中指定 ALL,如下所示:
#!/bin/bash
p1=$1
p2=$2
p3=$3
p4=$4
p5=$5
p6=$6
if [[ $p2 == *"notify"* ]]; then
p2=""
fi
/usr/bin/file-roller_orig $p1 $p2 $p3 $p4 $p5 $p6
该脚本是使用 Nautilus 中的 File Roller 上下文菜单选项禁用成功提取弹出窗口,并且它成功地做到了。但是,它仅限于一次最多提取 4 个档案。由于我经常一次提取十几个或更多文件,并且看到p2=$2与通知相关联,我尝试添加p7=$7等(我不是 CLI 专家),它确实提取了超过 4 个,但之后p9=$9 (提取 7 个档案),它停在那里 - 我认为这可能会发生在 Gedit 中p10=$10等末尾的最后一位数字与其余数字不同(我认为这不好)。
那么如何在p9=$9之后进行输入,或者更好的是,让脚本告诉 file-roller提取所有被选中的档案?后者是理想的,因为即使我可以让它一次提取十几个文件,我一定会在某个时候想要提取更多的文件,而不必分批进行。非常感谢您的回答。干杯。
您可以使用
"$@"
获取所有参数并shift N
删除 N 个参数。用双引号(例如
"$1"
)引用变量是确保 bash 不会尝试将一个变量用作多个参数的好主意。虽然 using
$@
更好,但可以使用 use${10}
来访问第十个参数。恕我直言,这种方法是有缺陷的,原因有几个。
最重要的是,它依赖于
--notify
作为命令的第二个位置参数给出。file-roller
虽然从 nautilus 操作调用时可能会出现这种情况,但不能保证它会保持这种情况(如果在其他上下文中运行当然不能保证)。其次,我们可以推断出该方法仅在未引用参数时才“有效”,因此您不想将替换值设置为空字符串 - 您想完全删除参数。
我建议改为
PATH
保存在比原始文件更早的位置/usr/bin/file-roller
- 例如/usr/local/bin/file-roller
(覆盖系统范围内的默认行为)或~/bin/file-roller
(仅覆盖您的用户)。