나는 꽤 단순한 스크립트입니다 뭔가 다음과 같습니다.
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
When I, I am not 실행하십시오 스크립트입니다 명령줄이 에서 인수, 통과시킬 조절이 출력입니다. 그러나 나는, 나는 '변수' $ 모세 실행하십시오 포함된 명령을 받을 수 있도록 출력입니다.
어떻게 한 결과 시행하십시오 명령을 실행해야 하는 내에 저장할 수 있는 출력을 가변으로 스크립트입니다 redhat. 가변으로 후 화면에?
,, #, # 96 박트릭스 외에도 < code> & command& < /code> 96;;; 사용할 수 있습니다 (명령) '또는', '$ $ (명령),' 내가 찾을 수 있는 " " 중첩할 사용할 수 있고, 쉽게 읽을 수 있습니다.
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
견적 (" ',') 가 문제를 행 보존할지 값.
올바른 방법은
$(sudo run command)
Re 사용하려는 경우 you& # 39, & # 39 ',' 아닌 '"아포스트로피 합니다. 이 문자 호출됨 " backticks"; (또는 중대한 accent" ";).
다음과 같습니다.
#!/bin/bash
VAR1="$1"
VAR2="$2"
MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
echo "$MOREF"
& # 39, 얻을 수 있기 때문에 이미 timerevent 콩지름에 backticks& # 39;.
물론 또 다른 제안된 '$ (명령)' 는 것은 쉽게 읽을 수 있지만, 참고 유효함 미디어만을 사용하여 Bash 또는 코른셸 (및 셸 파생됨 해당), 만일 스크립트에 대한 다양한 유닉스 시스템의 경우, 이전 박트릭스 포지셔닝하십시오 상행담관염이라고 이동형이든지 해야 한다고 말한다.
2nd 편집할지 12-02-2018: 다른 방법으로 이 부분에 대해 추가 http://community. 이동작업 !
myPi=`echo '4*a(1)' | bc -l`
echo $myPi
3.14159265358979323844
이를 위해 무거운 구현되었고, 괄호 중첩할 될 수 있다
myPi=$(bc -l <<<'4*a(1)')
네스트된 예제:
SysStarted=$(date -d "$(ps ho lstart 1)" +%s)
echo $SysStarted
1480656334
df -k /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/dm-0 999320 529020 401488 57% /
난 그냥 사용할 경우 가치:
array=($(df -k /))
declare -p array
declare -a array='([0]="Filesystem" [1]="1K-blocks" [2]="Used" [3]="Available" [
4]="Use%" [5]="Mounted" [6]="on" [7]="/dev/dm-0" [8]="999320" [9]="529020" [10]=
"401488" [11]="57%" [12]="/")'
그럼.
echo ${array[9]}
529020
하지만 난 포지셔닝하십시오 이:
{ read foo ; read filesystem size used avail prct mountpoint ; } < <(df -k /)
echo $used
529020
'1' 은 그냥 foo 검토완료 건너띄기 헤더입니다 선 (변수 '$ foo' 에는 '같은 항목을 사용할 수 있는 파일 시스템을 사용할 1k 블록 use% 마운트됨')
#!/bin/bash
declare free=0 total=0 used=0
getDiskStat() {
local foo
{
read foo
read foo total used free foo
} < <(
df -k ${1:-/}
)
}
getDiskStat $1
echo $total $used $free
노타: '선', 그냥 쉽게 구별할 수 있도록 너희가운데 필요하지 않습니다.
shell=$(cat /etc/passwd | grep $USER | cut -d : -f 7)
echo $shell
/bin/bash
(제발 피할 수 없게 될 'cat'! 그래서 오늘은 그냥 1 포크하지 덜.
shell=$(grep $USER </etc/passwd | cut -d : -f 7)
모든 것은 파이프 포크스 (''). 여기서 다른 프로세스를 실행할 수 있는 디스크, 라이브러리, 통화, 액세스하면 드릴링됩니다.
그래서 ',' 를 사용하여 sed 샘플링합니다 단 한 개의 하위 제한할 예정입니다 포크하지 :
shell=$(sed </etc/passwd "s/^$USER:.*://p;d")
echo $shell
하지만 대부분의 작업을 할 수 있는, 주로 작은 파일을 [태그: bash] 작업을 했다.
while IFS=: read -a line ; do
[ "$line" = "$USER" ] && shell=${line[6]}
done </etc/passwd
echo $shell
/bin/bash
또는
while IFS=: read loginname encpass uid gid fullname home shell;do
[ "$loginname" = "$USER" ] && break
done </etc/passwd
echo $shell $loginname ...
Have a look at my answer to How do I 분리-정합성 문자열으로 를 구분 bash 가능
myPi=$(bc -l <<<'4*a(1)'
myRay=12
myCirc=$(bc -l <<<" 2 * $myPi * $myRay ")
또는
myStarted=$(date -d "$(ps ho lstart 1)" +%s)
mySessStart=$(date -d "$(ps ho lstart $$)" +%s)
이 작업은 느리고 호스팅하면서 좋아요, 하지만 많은 포크 무겁습니다.
참조:
bc -l <<<$'3*4\n5*6'
12
30
date -f - +%s < <(ps ho lstart 1 $$)
1516030449
1517853288
그래서 우리는 많은 작업을 할 필요 없이 사용할 수 있는 긴 호스팅하면서 개시하려면 백그라운드 프로세스에 새로운 포크하지 요청마다.
mkfifo /tmp/myFifoForBc
exec 5> >(bc -l >/tmp/myFifoForBc)
exec 6</tmp/myFifoForBc
rm /tmp/myFifoForBc
(물론 '와' 6' 5' FD) 할 수 있도록 비사용률!). 여기에서 이 과정을 통해 사용할 수 있습니다.
echo "3*4" >&5
read -u 6 foo
echo $foo
12
echo >&5 "pi=4*a(1)"
echo >&5 "2*pi*12"
read -u 6 foo
echo $foo
75.39822368615503772256
내 '에서 찾을 수 있습니다' 기능을 뉴코너스 기투발컴 또는 내 자체 사이트를 (노타 켜짐이 깃허브 있으며, 이 두 개의 파일에 on my site, 기능, 데모 묶입니다 구입해야 사용할 수 있는 파일에 대한 또는 1 로 도망쳐야해 데모)
예제:
. shell_connector.sh
tty
/dev/pts/20
ps --tty pts/20 fw
PID TTY STAT TIME COMMAND
29019 pts/20 Ss 0:00 bash
30745 pts/20 R+ 0:00 \_ ps --tty pts/20 fw
newConnector /usr/bin/bc "-l" '3*4' 12
ps --tty pts/20 fw
PID TTY STAT TIME COMMAND
29019 pts/20 Ss 0:00 bash
30944 pts/20 S 0:00 \_ /usr/bin/bc -l
30952 pts/20 R+ 0:00 \_ ps --tty pts/20 fw
declare -p PI
bash: declare: PI: not found
myBc '4*a(1)' PI
declare -p PI
declare -- PI="3.14159265358979323844"
'배경' 이 기능을 사용하면 마이브스 간단한 작업을 위한 구문, 날짜:
newConnector /bin/date '-f - +%s' @0 0
myDate '2000-01-01'
946681200
myDate "$(ps ho lstart 1)" boottime
myDate now now ; read utm idl </proc/uptime
myBc "$now-$boottime" uptime
printf "%s\n" ${utm%%.*} $uptime
42134906
42134906
ps --tty pts/20 fw
PID TTY STAT TIME COMMAND
29019 pts/20 Ss 0:00 bash
30944 pts/20 S 0:00 \_ /usr/bin/bc -l
32615 pts/20 S 0:00 \_ /bin/date -f - +%s
3162 pts/20 R+ 0:00 \_ ps --tty pts/20 fw
여기에서 스케쳐내 끝까지 한 백그라운드 프로세스, 방금 fd 닫으십시오 할 그의 :
eval "exec $DATEOUT>&-"
eval "exec $DATEIN>&-"
ps --tty pts/20 fw
PID TTY STAT TIME COMMAND
4936 pts/20 Ss 0:00 bash
5256 pts/20 S 0:00 \_ /usr/bin/bc -l
6358 pts/20 R+ 0:00 \_ ps --tty pts/20 fw
이는 모든 fd 필요하지 않을 때 닫으십시오 때문에 주 프로세스 마무리.
그러니까말이야 할 세 가지 방법:
1) 기능 등 tasks: 적합한지
func (){
ls -l
}
이를 통해 'func' 호출하십시오 한다 "고 말했다.
2) 또 다른 적합한 솔루션을 eval: 될 수 있습니다.
var="ls -l"
eval $var
3) 는 세 번째 변수를 사용하여 directly:
var=$(ls -l)
OR
var=`ls -l`
제 3 의 길을 솔루션이므로 좋은 결과를 얻을 수 있습니다.
echo "$var"
못된 공구뿐 아니라 운행에서어떠한:
echo $var
이를 통해 스케쳐내 multiline / 여러 command/s 어졌다면 이 작업을 수행할 수 있습니다.
output=$( bash <<EOF
#multiline/multiple command/s
EOF
)
또는:
output=$(
#multiline/multiple command/s
)
예:
#!/bin/bash
output="$( bash <<EOF
echo first
echo second
echo third
EOF
)"
echo "$output"
출력:
first
second
third
[헤르두치] [1] 셨으며 단순화하십시오 쉽게 사용할 수 있습니다 (line code 를 쫓아서 따라 이미 꽤 긴 단일 multiline 하나. 또 다른 예를 들어:
output="$( ssh -p $port $user@$domain <<EOF
#breakdown your long ssh command into multiline here.
EOF
)"
[1]: http://www.gnu.org/software/bash/manual/html_node/Redirections.html # 여기에 문서
다음은 두 개 이상의 다음과 같습니다.
[태그: bash] 공간이 매우 중요한 점을 명심하십시오. 따라서 원하는 경우에는 명령을 그대로 사용, 실행하십시오 유발하지 않으면서 더 독창적이다.
그 후 인쇄 정보정의다음 color_name 하실 L 로 1.
L = $ " harshil"; echo $ L" ";
L2 = $ ($ L1" 에코 "; tr [쇱そ:] [낮은:])
만약 실패하면 명령을 실행할 수 있는 시도 중인 죽이려하겠어요 기록하십시오 출력입니다 인쇄할 수 있는 그런 후 스트리밍합니다 관용으로충만하신 오류 및 콘솔이군요. 이 문제를 방지하려면 리디렉션하십시오 오류 스트림을 합니다
result=$(ls -l something_that_does_not_exist 2>&1)