1
#!/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 ,这会是一个问题吗?

问候, 普里扬克

4

2 回答 2

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 ]]and语法。(( expression ))如果您继续使用 Bourne shell,您将需要重构循环计数器增量。

于 2013-09-23T23:37:23.500 回答
0

AIX 上的 /bin/sh 通常是 ksh,但正如 Eric 指出的那样,您在第一行的语法仍然是错误的。“do”出现在第一个分号之后。

另一点是读取想要一行中的所有值。从您的帖子中,您似乎想要为每个输入值单独一行?例如

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
....
于 2013-09-24T13:14:59.740 回答