从csh到bash,并重新生成相同的文件
我有一个bash文件需要获取源代码。用户可能在不知道(默认配置)的情况下拥有csh,因此我想将shell更改为bash,但源文件是用户的意图 这方面有很多帮助,产生的代码如下:从csh到bash,并重新生成相同的文件,bash,csh,Bash,Csh,我有一个bash文件需要获取源代码。用户可能在不知道(默认配置)的情况下拥有csh,因此我想将shell更改为bash,但源文件是用户的意图 这方面有很多帮助,产生的代码如下: #!/bin/csh (AND bash!) [ "$?shell" = "1" ] && bash --login -c 'source this_file; bash' && exit ... 除了源文件这个文件必须硬编码之外,一切都按预期进行。在csh中,$\u将包含source此
#!/bin/csh (AND bash!)
[ "$?shell" = "1" ] && bash --login -c 'source this_file; bash' && exit
...
除了源文件这个文件必须硬编码之外,一切都按预期进行。在csh中,$\u
将包含source此\u文件
,因为这是启动脚本源代码的命令,但我无法将其传递给bash命令
这意味着:
如果我使用:
... && set this_file=($_) && bash -c "$this_file; bash" && ...
... && bash -c ""$_"; bash" && ...
... && bash --login -c "$_; bash" && ...
bash会抱怨括号错误(当bash第二次启动并试图源代码此文件时,就会发生这种情况)
如果我使用:
... && set this_file=($_) && bash -c "$this_file; bash" && ...
... && bash -c ""$_"; bash" && ...
... && bash --login -c "$_; bash" && ...
bash得到一个坏掉的命令,该命令也不起作用:bash-c“source”“this_file”“;bash”
如果我使用:
... && set this_file=($_) && bash -c "$this_file; bash" && ...
... && bash -c ""$_"; bash" && ...
... && bash --login -c "$_; bash" && ...
csh得到一个中断的命令:`Unmatched'
我找不到如何在接受的bash语法中使用$\u
,该语法将值作为单个命令传递(即bash-c“sourcethis\u file;bash”
)
这就是测试:
cat >a.sh<<'EOF'
[ "$?shell" = "1" ] && bash --login -c 'source a.sh; bash' && exit
a=1
EOF
我很确定它过去是有效的……我现在正在试图找出为什么它现在不起作用。(我使用tcl模块包解决了这个问题,但我会尝试一下)可以将参数传递给bash-c'cmd'
构造,即bash-c'echo$@'arg0 1 2 3 4 5
#!/bin/csh (AND bash!)
#[ "$?shell" = "1" ] && bash --login -c 'source this_file; bash' && exit
[ "$?shell" = "1" ] && bash --login -c '${@}; bash' arg0 $_ && exit
可以将参数传递给bash-c'cmd'
构造,即bash-c'echo$@'arg0 1 2 3 4 5
#!/bin/csh (AND bash!)
#[ "$?shell" = "1" ] && bash --login -c 'source this_file; bash' && exit
[ "$?shell" = "1" ] && bash --login -c '${@}; bash' arg0 $_ && exit
$0不会给你访问脚本名称的权限吗?@kdubs不会,因为它是源代码。dang,你是对的。它会显示原始程序。当时没有权限尝试。我不确定我是否理解,但为什么“$”bash“
”而不仅仅是”$;bash“
?@244an csh在报价方面有一些问题。如果你尝试一下,你会得到无与伦比的“
错误,$0不会给你访问脚本名称的权限吗?@kdubs不会,因为它是源代码。dang,你是对的。它会显示原始程序。当时没有权限尝试。我不确定我是否理解,但为什么”“$”bash“而不仅仅是”$;bash”
?@244an csh在报价方面有一些问题。如果你尝试一下,你会得到不匹配的。
错误。这听起来很有希望,但我没有意识到。我现在无法让它工作(不是evan我以前的解决方案:-/)。一旦我验证了它的有效性,我将接受答案。这听起来很有希望,但我没有意识到。我现在无法使它有效(不是evan我以前的解决方案:-/)。一旦我验证了它的有效性,我将接受答案。