AIX上使用while循环创建文件系统

时间:2013-09-23 21:09:08

标签: shell unix while-loop ksh aix

#!/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

2 个答案:

答案 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)

AIX上的

/ 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
....