Shell 의 몇 가지 차 가운 지식 에 대한 정리 (IFS, 배열, 교체, 절단, 찾기)
4183 단어 Linux 잡기
■ IFS 사용처 직접 설명, 구체 적 IFS 는 무엇 을 하 는... 자체 구 글
먼저 "a"와 "a"파일 을 만 듭 니 다.
그리고 우리 ls 가 살 펴 보 자.
4. 567913. 그렇습니다.
그리고 만약 에 우리 가 스 크 립 트 를 써 서 모든 파일 을 조작 해 야 한다 면:
4. 567913. 그러나 결 과 는 확실히 이렇다. 분명히 우리 의 요구 와 부합 되 지 않 는 다.
IFS 의 값 은 빈 칸, 탭 문자, 리 턴 이기 때 문 입 니 다.그래서 여기 a 를 2 개 a 로 만 들 었 어 요.
그러나 우 리 는 IFS 를 수정 한 후 다음 과 같다.
4. 567913. 응, 이렇게 해서 우리 의 목적 을 달성 했다. 이때 '를 분할 부 로 한다.
배열:
스 크 립 트 설명:
--> ls
a a a
대체:
단일 교체
모두 교체
삭제
--> for i in $(ls); do echo "$i" ;done
a
a
a
절단:
몇 가지 방법 이 있 습 니 다. 첫 번 째 방법 은:
출력:
그러나 만약 그렇다면:
출력:
4. 567913. 우리 가 예 상 했 던 것 처럼 두 번 째 분할 방법 은 아니다.
IFS 법:
출력:
--> OldIfs=$IFS;IFS=$'
';for i in $(ls); do echo "$i" ;done ;IFS=$OldIfs
a
a a
찾기:
다른 문자열 을 포함 하 는 문자열 을 찾 습 니 다.
#!/bin/bash
# *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
# > Author: xiaojunyu/LunaW
# > Mail : [email protected]
# > Gmail : [email protected]
# > Blog : http://blog.csdn.net/lunaw
# > Web : http://lunaw.org http://lunaw.net
# *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
# DEPENDS:=+libsqlite3 +libcurl +libpthread +libc
#
SelectPackages=(
"sed"
"gawk"
"grep"
"bc"
"luci-lib-json"
"iperf"
"tc"
"restorefactory"
"xinetd"
"n2n"
)
#
UnSelectPackages=(
"horst"
"vim-full"
"vim-runtime"
"qos-scripts"
"wifidog"
"libcurl"
"curl"
"tc"
"sqlite3-cli"
"libsqlite3"
)
if [[ -f .config ]]; then
for Name in `seq 1 ${#SelectPackages[*]}`
do
PackageName="CONFIG_PACKAGE_${SelectPackages[$(expr $Name - 1)]}"
if [[ `cat .config| grep "${PackageName}=y"| wc -l` == 0 ]]; then
echo -e "\e[01;31mNot Found (${PackageName}=y) "
if [[ `cat .config| grep "# ${PackageName} is not set"| wc -l` == 1 ]]; then
echo -e "\e[01;33mFound (# ${PackageName} is not set) "
sed -i "s/# ${PackageName} is not set/${PackageName}=y/g" .config
echo -e "\e[01;36mReplace (${PackageName}=y) done!"
else
echo -e "\e[01;31mNot Found (# ${PackageName} is not set) "
echo "${PackageName}=y" >> .config
echo -e "\e[01;36mAdd (${PackageName}=y) done!"
fi
else
echo -e "\e[01;33mFound (${PackageName}=y) "
fi
done
echo "--------------------------------------"
for Name in `seq 1 ${#UnSelectPackages[*]}`
do
PackageName="CONFIG_PACKAGE_${UnSelectPackages[$(expr $Name - 1)]}"
if [[ `cat .config| grep "# ${PackageName} is not set"| wc -l` == 0 ]]; then
echo -e "\e[01;31mNot Found (# ${PackageName} is not set) "
if [[ `cat .config| grep "${PackageName}=y"| wc -l` == 1 ]]; then
echo -e "\e[01;33mFound (${PackageName}=y) "
sed -i "s/${PackageName}=y/# ${PackageName} is not set/g" .config
echo -e "\e[01;36mReplace (# ${PackageName} is not set) done!"
else
echo -e "\e[01;31mNot Found (${PackageName}=y) "
echo "# ${PackageName} is not set" >> .config
echo -e "\e[01;36mAdd (# ${PackageName} is not set) done!"
fi
else
echo -e "\e[01;33mFound (# ${PackageName} is not set) "
fi
done
else
echo -e "\e[01;31mNot Found .config"
fi
echo -e "\e[01;00m+---------------------------------+"
echo -e "\e[01;00m| , ! |"
echo -e "\e[01;00m+---------------------------------+"
sleep 1
--> XiaoName="xiaojunyu"; echo "${XiaoName/x/j}"
jiaojunyu