num=$(printf "%0.s$i" $(seq 1 $i))换一种类似C语言的写法
时间: 2023-12-30 13:05:38 浏览: 39
可以使用 C 风格的循环语句 `for` 和字符串拼接运算符 `+=` 来代替 `seq` 命令和字符串拼接操作符 `-`。更新后的脚本如下:
```bash
#!/bin/bash
read -p "Enter n: " n
sum=0
for (( i=1; i<=n; i++ ))
do
num=""
for (( j=1; j<=i; j++ ))
do
num+="$i"
done
sum=$((sum + num))
done
echo "$sum"
```
在这个脚本中,我们使用两个 `for` 循环,第一个循环变量 `i` 从 1 到 $n,第二个循环变量 `j` 从 1 到 `i`。在内部循环中,我们将数字 `i` 拼接到字符串 `num` 的末尾,然后将 `num` 加到 `sum` 中。注意,在这个脚本中,我们使用 `$((...))` 来执行算术运算,而不是使用 `bc` 命令。
相关问题
read n sum=0 for i in `seq 1 $n` do num='' for j in `seq 1 $i` do num=$num$i done sum=$((sum + num )) done echo $sum换一种写法
可以使用一行命令代替上面的多行脚本:
```
echo $(seq 1 $n) | sed 's/ /+/g' | bc
```
这行命令使用 `seq` 生成从 1 到 $n 的数字序列,然后将这些数字用空格分隔,传递给 `sed` 命令进行字符串替换,将空格替换为加号 `+`,最后将新的表达式传递给 `bc` 命令进行计算。
for i in $(seq 10) do echo $(($RANDOM%1000+1)) done
这是一个 Bash 脚本,它会生成 10 个随机数,并输出到终端上。每个随机数是 1 到 1000 之间 (包括 1 和 1000) 的整数。每次运行脚本时,输出的数字序列会不同。
你可以将这个脚本保存为一个文件,比如 `random.sh`,然后在终端上运行:
```
sh random.sh
```
或者先给脚本文件添加执行权限:
```
chmod +x random.sh
```
然后直接运行:
```
./random.sh
```