我想知道可以用来从子shell更改父shell的目录的任何机制.例如,我在$ HOME中运行脚本"settings.sh".我的$ HOME有一个目录$ HOME/TEST/run.如果我的"settings.sh"脚本如下所示
#!/bin/bash
# some shell related code
# some shell related code
cd $HOME/TEST/run
exit 0
Run Code Online (Sandbox Code Playgroud)
我在$ HOME的命令提示符下执行上面的脚本.执行后,我希望我的命令提示符在目录$ HOME/TEST/run中.我明白在子shell中,它正在被cd到$ HOME/TEST/run,但是在执行结束时,它又回到了$ HOME.
使用单个脚本是否有任何优雅的方法来完成上述操作.一种方法是修改脚本"settings.sh"以生成另一个脚本,然后使用".$ HOME/generatedScript.sh"
我需要检查脚本是否正在运行bash或csh.
#!/bin/csh
if ( `echo $SHELL` != '/bin/tcsh' )
echo 'Please run it in csh'
exit
endif
Run Code Online (Sandbox Code Playgroud)
这段代码给出了
bash: g.csh: line 7: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个csh脚本,它将在子目录中执行makefile.到目前为止我有这个:
find -maxdepth 2 -name 'Makefile' -print -execdir make \;
我遇到的问题是当我尝试运行它时出现以下错误:
find: The current directory is included in the PATH environment variable, which is insecure in combination with the -execdir action of find. Please remove the current directory from your $PATH (that is, remove "." or leading or trailing colons)
在这种情况下,我无法合理地更改$ PATH变量.关于变通方法的任何想法.
非常感谢和愉快的编码
我想创建一个 csh 别名,如果不带参数调用,则执行一个操作;如果使用单个参数调用,则执行第二个操作。有谁知道如何做到这一点?(尝试引用未传递的参数会触发错误)。
RHEL6
我有一个运行perl脚本的c-shell脚本。在将大量的东西转储到stdout之后,它确定perl脚本完成时父shell应当安装到的目录(目录)。但这是一个字符串,而不是一个整数,这就是我可以通过“ exit()”返回的全部。
现在,将dir的名称存储在c-shell脚本可以读取的文件中。它有效,但不优雅。有一个更好的方法吗 ?也许我可以与perl脚本共享一些内存?
这是我的脚本的提示:询问用户“你还好吗?”的脚本
如果用户回答 y 或 Y,则说“很高兴听到它”,否则如果用户输入 n 或 N,则打印“对不起,你感觉不舒服”。如果用户输入其他字符,则打印不正确的选项并再次提问。
这是我所拥有的:
#! /bin/csh
echo "Are you OK? "
set n = $<
set loop = 1
if (("$n" == "y") || ("$n" == "Y")) then
echo "glad to hear it"
else if (("$n" == "n") || ("$n" == "N")) then
echo "sorry that you are not feeling good"
else
echo "in-correct choice"
while ( $loop == 1 )
echo "Are you OK? "
set n = $<
if (("$n" == "y") || …Run Code Online (Sandbox Code Playgroud) 我的csh脚本
#!/bin/csh
# C-schell script to increase the boundingbox....
echo '%\!PS-Adobe-3.0 EPSF-3.0'
echo '%%BoundingBox: 0 0 1100 1100'
tail +3 $argv[1]
Run Code Online (Sandbox Code Playgroud)
叫这里
csh bbox.csh plt >! plt_P1.ps
Run Code Online (Sandbox Code Playgroud)
但是我有
csh -f bbox.csh plt
tail: cannot open ‘+3’ for reading: No such file or directory
Run Code Online (Sandbox Code Playgroud)
该怎么tail办?编写代码的人使用Darwin,我在Ubuntu 14.04上.