是否可以在$ip_choice未设置之前与数字进行比较?
#!/bin/bash
ip_choice=999
while ! (( $ip_choice <= 233 ))
do
read -p "Enter a valid IP (1-256): " ip_choice
done
Run Code Online (Sandbox Code Playgroud)
它的工作就是这样 - 只有我想知道是否有更优雅的可能性:-).
#!/bin/bash
while read -r -p "Enter a valid IP (1-256): " ip_choice; do
(( ip_choice >= 1 && ip_choice <= 256 )) && break
done
echo "${ip_choice}"
Run Code Online (Sandbox Code Playgroud)
$ ./t.sh
Enter a valid IP (1-256): -1
Enter a valid IP (1-256): 0
Enter a valid IP (1-256): 257
Enter a valid IP (1-256): abc
Enter a valid IP (1-256): 20
20
Run Code Online (Sandbox Code Playgroud)
你可以利用until:
until ((ip_choice >=1 && ip_choice <= 256)); do
read -p "Enter a valid IP (1-256): " ip_choice;
done
Run Code Online (Sandbox Code Playgroud)
引用自help until:
until: until COMMANDS; do COMMANDS; doneRun Code Online (Sandbox Code Playgroud)Execute commands as long as a test does not succeed. Expand and execute COMMANDS as long as the final command in the `until' COMMANDS has an exit status which is not zero. Exit Status: Returns the status of the last command executed.
例如:
$ until ((ip_choice >=1 && ip_choice <= 256)); do
> read -p "Enter a valid IP (1-256): " ip_choice;
> done
Enter a valid IP (1-256): 0
Enter a valid IP (1-256): 298
Enter a valid IP (1-256): 242
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |