#!/bin/bash read -p "输入一个树" num1 read -p "输入一个树" num2 read -p "输入一个树" num3 tmp=0 if [ $num1 -gt $num2 ] then tmp=$num1 $num1=$num2 $num2=$tmp elif [ $num1 -gt $num3 ] then tmp=$num1 $num1=$num3 $num3=$tmp elif [ $num2 -gt $num3 ] then tmp=$num2 $num2=$num3 $num3=$tmp fi echo "$num1,$num2,$num2"
时间: 2023-09-07 15:12:24 浏览: 86
你的代码有一些问题,主要是在交换变量值的部分。在 Bash 脚本中,变量的赋值不需要使用 `$` 符号。下面是修改后的代码:
```bash
#!/bin/bash
read -p "输入一个数:" num1
read -p "输入一个数:" num2
read -p "输入一个数:" num3
tmp=0
if [ $num1 -gt $num2 ]
then
tmp=$num1
num1=$num2
num2=$tmp
fi
if [ $num1 -gt $num3 ]
then
tmp=$num1
num1=$num3
num3=$tmp
fi
if [ $num2 -gt $num3 ]
then
tmp=$num2
num2=$num3
num3=$tmp
fi
echo "$num1, $num2, $num3"
```
这段代码会接收三个输入的数,并对它们进行排序,然后打印出排序后的结果。
相关问题
#!/bin/bash echo `Input a number:` read Num case $Num in 1) echo `select 1` ;; 2) echo `select 2` ;; 3) echo `select 3` ;; *) echo `other` ;; esac
这是一个简单的Shell脚本,根据用户输入的数字进行不同的操作。用户将被提示输入一个数字,然后根据输入的数字执行相应的操作。如果输入的数字是1,则会输出"select 1";如果输入的数字是2,则会输出"select 2";如果输入的数字是3,则会输出"select 3";如果输入的数字不是1、2、3,则会输出"other"。
#! /bin/bash sum=0 while true do read a if [ $a -eq 0 ] then break fi echo $a # sum=`expr $sum + $a` sum=$((sum+num)) done echo $sum为什么这个代码运行不了
这段代码中有几个问题:
1. 在`sum=$((sum+num))`那一行中,变量`num`未定义,应该使用`a`来代替。
2. 在`if [ $a -eq 0 ]`那一行中,应该使用`$a`来获取变量`a`的值。
修改后的代码如下:
```bash
sum=0
while true; do
read a
if [ "$a" -eq 0 ]; then
break
fi
echo $a
sum=$((sum+a))
done
echo "Sum is: $sum"
```
这个脚本可以读取一系列数字,直到读取到0为止。在读取每个数字时,它会将其打印出来,并将其添加到变量`sum`中。最后输出所有数字的和。
注意,在比较`$a`和0时,需要将`$a`用双引号括起来,以防止在某些情况下出现语法错误。
阅读全文