另请参阅我的previous question。 所以......我有一个剧本:
function go_loop (){
for i in `grep -v ^# $1`; do
$2
done
}
go_loop "/tmp/text.txt" "echo $i"
我应该得到一个结果:
9
20
21
...
但显然我只得到一个空洞的结果。如何将第二个输入参数输入循环? 请不要建议我这样做:
for i in `grep -v ^# $1`; do
echo $i
done
我需要输入2个参数,第一个是文件名,第二个是执行命令名
答案 0 :(得分:0)
您可以使用循环内的exec
来执行此操作,这将以$2
作为bash命令运行:
[root@box ~]# ./test.sh 1 ls
test.sh tests_passed.txt
[root@box ~]# cat test
exec $2
exec 内置命令用于
用给定的程序替换shell(执行它,而不是作为新进程) 设置要执行的程序或当前shell的重定向
答案 1 :(得分:0)
你需要像这样评估第二个参数:
"substring"(my_table.url, '.*app/([^/]*)'::text)
并像这样传递:
BEGIN;
UPDATE my_table SET group_id = "substring"(my_table.url, '.*app/([^/]*)'::text);
COMMIT;