gpt4 book ai didi

Linux 庆典 : reacting to -c and -[0-9] in a case

转载 作者:太空狗 更新时间:2023-10-29 12:05:10 24 4
gpt4 key购买 nike

我正在尝试编写一个脚本来响应作为参数的 -c 输入。它应该以大写形式打印下一个参数。第二个是 -[0-9] 的输入,您可以在其中输入 0 到 9 之间的任何数字。然后应该打印下一个参数,与您输入的数字一样多。

这是我的代码:

function print_info(){
echo mijn CPU-type is: $CPU
echo mijn Totaal beschikbare RAM is: $RAMTOTAAL kB
echo mijn IP-adres is $IP_ADDR en mijn Default Gateway is: $GW
echo momenteel is er $RAMUSEDPROCENT % van mijn geheugen in gebruik
}

while :
do
param=1
params=$#
CPU=$(cat /proc/cpuinfo | grep model | grep name | cut -d: -f2)
RAMTOTAAL=$(free | grep Mem | cut -d: -f2 | awk '{ print $1}')
IP_ADDR=$(ifconfig | grep inet | head -1 | cut -d: -f2 | awk '{print $1}')
GW=$(netstat -nr | awk '{print $2}' | head -3 | awk 'NR == 3 { print $1}')
RAMFREE=$(free | grep Mem | cut -d: -f2 | awk '{ print $3}')
RAMUSED=$(free | grep Mem | cut -d: -f2 | awk '{ print $2}')
RAMUSEDPROCENT=$(($RAMUSED*100/$RAMTOTAAL))
counter=1
while [ "$param" -le "$params" ]
do
case \$$param in
"-c" ) shift; echo \$$param zegt je dat | awk '{print toupper($0)}'; print_info;;
[0-9] ) shift; while [ $counter -lt \$$param ]; do echo \$$param; print_info; done;;
* ) eval echo \$$param zegt je dat; print_info;;
esac
(( param ++ ))
done
done

希望大家能帮帮我。

最佳答案

问题是您错误地使用了位置参数,并且您正在尝试执行您无法执行的双重取消引用。另外,我看到您正在使用 shift,但您使用的不正确...

处理位置参数的正常方法当然是在循环中。

set -- echo -c foo 4 test
while [ $# -gt 0 ]; do
case "$1" in
-c)
echo second time through the loop, "\$1" == "$1".
echo also, "\$2" == "$2";
shift; shift ;;
[0-9])
echo third time through, "\$1" == "$1" and "\$2" == "$2"
: do stuff
shift; shift ;;
*)
echo first time through the loop, "\$1" == "$1"
shift ;;
esac
done

看看你的结果如何。

关于Linux 庆典 : reacting to -c and -[0-9] in a case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com