在 shell 脚本中更改目录,并使用 expr
我刚刚开始使用 shell 脚本 (sh),有两个问题。
问题 1:我正在尝试制作一个非常简单的脚本来创建一个目录并立即进入该目录。这是我目前拥有的脚本:
#!/bin/sh
mkdir -p "$1"
cd "$1"
由于某种原因,这不起作用。它创建目录,但不进入该目录。我在这里遗漏了一些明显的东西吗?
问题 2:我正在编写一个使用 expr 的非常简单的计算器。但对于乘法,我使用 x
而不是 *
。这就是我现在所拥有的:
#!/bin/sh
if test $# -lt 3
then
echo "Usage calc [operand1] [operator] [operand2]"
exit
fi
if test $2 = x
then
op='\*'
else
op=$2
fi
ret=`expr $1 $op $3`
echo $ret
这适用于除乘法之外的所有运算。例如,调用 calc 100 x 10
会出现语法错误。我尝试了不同的组合,但我似乎无法找到将 \*
分配给 op
的正确方法。正确的做法是什么?
I am just starting out with shell scripting (sh), and I have two issues.
Issue 1: I'm trying to make a very simple script that creates a directory and immediately goes into it. This is the script I currently have:
#!/bin/sh
mkdir -p "$1"
cd "$1"
For some reason, this does not work. It creates the directory, but does not go into it. Am I missing something obvious here?
Issue 2: I'm writing a very simple calculator that uses expr. But for the multiplication, I use x
instead of *
. So this is what I have right now:
#!/bin/sh
if test $# -lt 3
then
echo "Usage calc [operand1] [operator] [operand2]"
exit
fi
if test $2 = x
then
op='\*'
else
op=$2
fi
ret=`expr $1 $op $3`
echo $ret
This works for all the operations except multiplication. Calling calc 100 x 10
, for example, gives a syntax error. I tried different combinations, but I can't seem to get the right way of assigning \*
to op
. What's the right way of doing it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
a) 脚本在新 shell 中运行。
cd
不适用于外部。尝试使用 shell 别名来代替此脚本。b) 以不同的方式引用参数,特别是在
expr
中a) the script is run in a new shell. The
cd
doesn't apply to the outer. Try a shell alias instead of this script.b) Quote parameters differently, in particular in
expr