在 shell 脚本中更改目录,并使用 expr

发布于 2024-12-17 20:06:21 字数 673 浏览 0 评论 0原文

我刚刚开始使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

惜醉颜 2024-12-24 20:06:21

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文