önceki biri başarılı yalnızca her komutu çalıştırmak istiyorsanız, o zaman &&
operatörünü kullanarak bunları birleştirmek:
komutlardan biri başarısız olursa
cd /my_folder && rm *.jar && svn co path to repo && mvn compile package install
, o zaman tüm diğer komutlar da olmayacak aşağıdaki idam.
Eğer noktalı virgülle ayırın bakmaksızın önceki olanları başarısız olsun ya da olmasın tüm komutları yürütmek istiyorsanız
: Senin durumunda
cd /my_folder; rm *.jar; svn co path to repo; mvn compile package install
, ilk senin davayı istiyorum düşünüyorum nerede sonraki komutun yürütülmesi Bir öncekinin başarısına bağlıdır. Bir sonraki satır yeni bir komut olduğunu düşünerek gelen kabuk orada önlemek için satırın sonunda edilir
#! /bin/sh
cd /my_folder \
&& rm *.jar \
&& svn co path to repo \
&& mvn compile package install
(ters eğik çizgi:
Ayrıca senaryodaki tüm komutları koymak ve bunun yerine yürütebileceği .; Eğer ters eğik çizgi atlarsanız, örneğin myscript
için bir dosyaya) tek bir satırda bütün komut yazmak için bu kaydet
gerekir, ve çalıştırılabilir yapın:
chmod +x myscript
Artık bu komut dosyasını makinedeki diğer programlar gibi çalıştırabilirsiniz. Ancak, PATH
ortam değişkeninizde (örneğin, /usr/local/bin
veya bazı Linux dağıtımlarında ~/bin
) listelenen bir dizinin içine yerleştirmezseniz, o komut dosyasının yolunu belirtmeniz gerekir. İlk örnekte komutla aynı şekilde çalışır komut
./myscript
komutları;: o anki dizinde konusuysa, bunu çalıştırmak Bir sonraki komut sadece bir öncekinin başarılı olması durumunda yürütülür. tüm komutların koşulsuz yürütülmesi için, sadece kendi satırında her komutu listelemek:
#! /bin/sh
cd /my_folder
rm *.jar
svn co path to repo
mvn compile package install
+1. –
+1. Bu tam olarak aradığım şey! –
Gelecek okuyucular için: Ayrıca, '' i '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'kullanabilirsiniz. Bunu denerken, başarısız olursa, bunu deneyin. – DeVadder