Создайте функцию
report () {
if [ $1 -eq 0 ]; then
echo "$2"
else
echo "Command failed"
fi
}
VAR1=$(aws ec2 create-vpc --query "Vpc.VpcId" --output text)
report $? "$VAR1"
VAR2=$(aws ec2 create-subnet --query "Subnet.SubnetId" --output text)
report $? "$VAR2"
Кажется, вы также можете создать функцию для aws ec2
.
rsync -rv /home/myname/mydir1/* myhost:/home/myname/mydir1
будет копировать файлы только в mydir1 (и подкаталоги)
rsync -rv /home/myname/mydir1 myhost:/home/myname/mydir1
скопирует сам каталог, поэтому вы получите mydir1/mydir1
francois@zaphod:~/tmp$ rm -rf b
francois@zaphod:~/tmp$ mkdir b
francois@zaphod:~/tmp$ rsync -rv a/* b
sending incremental file list
a
sent 80 bytes received 35 bytes 230.00 bytes/sec
total size is 0 speedup is 0.00
francois@zaphod:~/tmp$ tree b
b
└── a
0 directories, 1 file
francois@zaphod:~/tmp$ rm -rf b
francois@zaphod:~/tmp$ rsync -rv a b
sending incremental file list
created directory b
a/
a/a
sent 108 bytes received 63 bytes 342.00 bytes/sec
total size is 0 speedup is 0.00
francois@zaphod:~/tmp$ tree b
b
└── a
└── a
1 directory, 1 file
Это редкий случай, когда отставание /
важно. Во многих командах указание foo
и foo/
идентично. Но у него есть семантическая разница. В некоторых командах, включая rsync, замыкающий /
указывает команде выполнить особое действие, основанное на том факте, что это каталог. Если у вас возникла ситуация, созданная...
mkdir foo bar
touch foo/baz
... и вы хотите скопировать содержимое из foo в bar, тогда НЕ указывайте...
rsync -rv foo bar
... вместо этого укажите...
rsync -rv foo/ bar
В противном случае rsync решит, что вы хотите скопировать все дерево (, включая родительский каталог ), в целевой каталог, как вы нашли.
Другим примером с подобной эффективной семантикой является ls
при перечислении ссылок:
mkdir foo
touch foo/baz
ln -s foo bar
ls -l bar
lrwxrwxrwx 1 philip philip 3 May 7 14:58 bar -> foo
ls -l bar/
total 0
-rw-r----- 1 philip philip 0 May 7 14:58 baz
См. примеры в разделе «Использование» справочной страницы rsync
Вы можете использовать
rsync -rv /home/myname/mydir1 myhost:/home/myname
или
rsync -rv /home/myname/mydir1/ myhost:/home/myname/mydir1