le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
$
$()
UtilizzoVariabili speciali della shell, utilizzate negli script e nelle funzioni per passare parametri.
Sono disponibili le seguenti variabili parametriche posizionali speciali:
variabile | effetto |
---|---|
$0 | Ottieni il nome del file dello script della shell e il percorso dello script |
$n | Ottieni l'ennesimo parametro dello script di shell n è compreso tra 1 e 9. Se è maggiore di 9, alcuni{} ,Piace{$10} |
$# | Ottieni il numero totale di parametri dietro lo script di shell eseguito |
$* | Ottieni tutti i parametri dello script di shell, senza virgolette, a cui equivale$@ La funzione, più le virgolette "$*", èRiceve tutti i parametri come un'unica stringa |
$@ | Senza virgolette, l'effetto è lo stesso di sopra. Con le virgolette, lo èRicevi tutti i parametri come stringhe indipendenti |
Metodo di ricerca:man bash
,ricercaSpecial Parameters
variabile | effetto |
---|---|
$? | Valore restituito dello stato di esecuzione dell'ultimo comando, 0 è corretto, diverso da 0 non è riuscito |
$$ | Il numero di processo dello script di shell corrente |
$! | PID dell'ultimo processo in background |
$_ | Ottieni l'ultimo parametro dell'ultimo comando |
-n
: visualizza il contenuto senza interruzioni di riga-e
: interpreta i caratteri di escape n
: nuova linear
: Accederet
:schedab
:backspacev
: carattere di tabulazione verticaleeval ls; cd ~
exec
Dopo l'esecuzione, automaticamenteexit
grammatica:
grammatica | effetto |
---|---|
# | Rimuovi la corrispondenza più breve dall'inizio |
## | Rimuovi la corrispondenza più lunga dall'inizio |
% | Rimuovi la corrispondenza più breve dalla fine |
%% | Rimuovi la corrispondenza più lunga dalla fine |
# | Intercettazione del contenuto del carattere specificato |
a*c | Corrisponde a una stringa che inizia con a, con un numero qualsiasi di caratteri al centro e termina con c |
${变量} | Restituisce il valore della variabile |
${#变量} | Restituisce lunghezza variabile, lunghezza del carattere |
${变量:start} | Restituisce il carattere dopo il valore di offset della variabile |
${变量:start:length} | Estrai i caratteri limitati dalla lunghezza dopo l'offset |
${变量#word} | Dall'inizio della variabile, elimina la sottostringa di parole corrispondente più breve |
${变量##word} | Dall'inizio della variabile, elimina la parola corrispondente più lunga |
${变量%word} | Rimuovi la sottostringa di parole corrispondente più breve dalla fine della variabile |
${变量%%word} | Rimuovi la sottostringa di parole corrispondente più lunga dalla fine della variabile |
${变量/pattern/string} | Sostituisci il primo modello corrispondente con una stringa |
${变量//pattern/string} | Sostituisci tutti i modelli con la stringa |
Esempio di operazione: Elimina il nome del file
# 通过⼦串的替换⽅式
snowk@SnowKYP# f=stu_102999_1_finished.jpg
# 变量的⼦串功能,去掉后缀
snowk@SnowKYP# echo ${f//_finished/}
stu_102999_1.jpg
# 利⽤变量的反引⽤替换⽂件名
snowk@SnowKYP# mv $f `echo ${f//_finished/}`
# 剩下的⽂件,利⽤循环操作
# 找出剩下所有需要替换的jpg⽂件
snowk@SnowKYP# ls *fin*.jpg
stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
# 写shell循环代码,循环操作
# 去掉所有jpg⽂件的_finished后缀
snowk@SnowKYP# for file in `ls *fin*.jpg`;do mv $file `echo ${file//_finished/}`;done
snowk@SnowKYP# ls *.jpg
stu_102999_1.jpg stu_102999_2.jpg stu_102999_3.jpg stu_102999_4.jpg stu_102999_5.jpg
parameter,参数,范围
${parameter:-word}
:Separameter
Il valore della variabile è vuoto, returnword
corda${parameter:=word}
:Separameter
Il valore della variabile è quindi vuotoword
Sostituisce un valore variabile e ne restituisce il valore${parameter:?word}
:Separameter
Il valore della variabile è vuoto,word
COMEstderr
Uscita, altrimenti valore della variabile di uscita ${parameter:+word}
:Separameter
Se il valore della variabile è vuoto, non fare nulla, altrimentiword
ritorno# 原脚本命令,有bug,有歧义
find ${file_path} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f
# 修正后的脚本命令
# 如果有bug起义,就在当前目录搜索并执行删除
find ${file_path:=/tmp} -name '*.tar.gz' -type f -mtime +7 | xargs rm -f