#!/bin/sh
echo "VG: "
read VG
echo "LP: "
read LP
echo "SAP: "
read SAP
echo "NUM: "
read NUM
echo "SID: "
read SID
while [[ $NUM -lt 2 ]]; read VG LP SAP NUM SID ; do
mklv -y $SAP$NUM -t jfs2 -e x $VG $LP;
crfs -v jfs2 -d /dev/$SAP$NUM -m /oracle/$SID/$SAP$NUM -A yes -p rw -a log=INLINE -a options=cio;
NUM=$((NUM+1)) OR (( NUM++ ))
done
我想在AIX上创建文件系统priyank1,priyank2等等......
VG是卷组名称,LP是FS的逻辑分区/大小,SAP是名称“priyank”,SID是/ oracle下的目录。
如果需要进一步的细节,请告诉我。 请帮助上面的脚本无效......在执行命令时不能正确读取变量。
我也将2个变量放在$ SAP $ NUM中,这会有问题吗?
此致 Priyank
答案 0 :(得分:0)
您在Bourne shell中使用BASH shell语义。将第一行更改为:
#!/bin/bash
或更改您的while
语句以使用Bourne语法。
while [ $NUM -lt 2 ]; do
read VG LP SAP NUM SID
mklv -y $SAP$NUM -t jfs2 -e x $VG $LP
.
.
.
done
Bourne shell(/ bin / sh)中不存在[[ expression ]]
和(( expression ))
语法。如果继续使用Bourne shell,则需要重构循环计数器增量。
答案 1 :(得分:0)
/ bin / sh通常是ksh,但是第一行的语法仍然是错误的,正如Eric指出的那样。 “do”出现在第一个分号之后。
另一点是读取想要一行上的所有值。从您的帖子看,您似乎想要为每个输入值分别添加行? e.g。
while [[ $NUM -lt 2 ]] ; do
read VG
read LP
read SAP
read NUM
read SID
.
.
.
done
原件将用作:
script_name
1 2 3 4 5 # would read all five values for the first run
6 7 8 9 10 # a new set of five values for the second run
...
但您可能希望将其用作:
script_name
1 # the value for VG on the first run
2 # the value of LP for the first run
....