Unexpected value of $? when using subshell
Clash Royale CLAN TAG#URR8PPP
up vote
0
down vote
favorite
I want to check if a file exists in HDFS or not and capture it in the variable SUCCESS_FILE_CHECK
, i.e., if file exists the SUCCESS_FILE_CHECK
should be 0
else it can be any other value.
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file)
$ echo $SUCCESS_FILE_CHECK
$ hdfs dfs -test -e hdfs://path/to/file # given this file exists
$ echo $?
0
My understanding was, if the file exists then the command within the subshell $()
will return 0
and SUCCESS_FILE_CHECK
will be initialized to 0
. But instead when I do echo $SUCCESS_FILE_CHECK
, I get nothing (irrespective of whether the file exists or not).
Also take a look at the following script:
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file) # given this file exist
$ echo $?
0
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file2) # given this file DOES NOT exist
$ echo $?
1
In this case, I expected the output of both the echo
to be 0
since $?
prints the status of the last command executed and the last command executed is an assignment (a=b
) which should always return true, since the command did run successfully.
Can someone help me understand this behaviour?
bash subshell hadoop exit-code
New contributor
add a comment |Â
up vote
0
down vote
favorite
I want to check if a file exists in HDFS or not and capture it in the variable SUCCESS_FILE_CHECK
, i.e., if file exists the SUCCESS_FILE_CHECK
should be 0
else it can be any other value.
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file)
$ echo $SUCCESS_FILE_CHECK
$ hdfs dfs -test -e hdfs://path/to/file # given this file exists
$ echo $?
0
My understanding was, if the file exists then the command within the subshell $()
will return 0
and SUCCESS_FILE_CHECK
will be initialized to 0
. But instead when I do echo $SUCCESS_FILE_CHECK
, I get nothing (irrespective of whether the file exists or not).
Also take a look at the following script:
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file) # given this file exist
$ echo $?
0
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file2) # given this file DOES NOT exist
$ echo $?
1
In this case, I expected the output of both the echo
to be 0
since $?
prints the status of the last command executed and the last command executed is an assignment (a=b
) which should always return true, since the command did run successfully.
Can someone help me understand this behaviour?
bash subshell hadoop exit-code
New contributor
add a comment |Â
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I want to check if a file exists in HDFS or not and capture it in the variable SUCCESS_FILE_CHECK
, i.e., if file exists the SUCCESS_FILE_CHECK
should be 0
else it can be any other value.
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file)
$ echo $SUCCESS_FILE_CHECK
$ hdfs dfs -test -e hdfs://path/to/file # given this file exists
$ echo $?
0
My understanding was, if the file exists then the command within the subshell $()
will return 0
and SUCCESS_FILE_CHECK
will be initialized to 0
. But instead when I do echo $SUCCESS_FILE_CHECK
, I get nothing (irrespective of whether the file exists or not).
Also take a look at the following script:
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file) # given this file exist
$ echo $?
0
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file2) # given this file DOES NOT exist
$ echo $?
1
In this case, I expected the output of both the echo
to be 0
since $?
prints the status of the last command executed and the last command executed is an assignment (a=b
) which should always return true, since the command did run successfully.
Can someone help me understand this behaviour?
bash subshell hadoop exit-code
New contributor
I want to check if a file exists in HDFS or not and capture it in the variable SUCCESS_FILE_CHECK
, i.e., if file exists the SUCCESS_FILE_CHECK
should be 0
else it can be any other value.
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file)
$ echo $SUCCESS_FILE_CHECK
$ hdfs dfs -test -e hdfs://path/to/file # given this file exists
$ echo $?
0
My understanding was, if the file exists then the command within the subshell $()
will return 0
and SUCCESS_FILE_CHECK
will be initialized to 0
. But instead when I do echo $SUCCESS_FILE_CHECK
, I get nothing (irrespective of whether the file exists or not).
Also take a look at the following script:
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file) # given this file exist
$ echo $?
0
$ SUCCESS_FILE_CHECK=$(hdfs dfs -test -e hdfs://path/to/file2) # given this file DOES NOT exist
$ echo $?
1
In this case, I expected the output of both the echo
to be 0
since $?
prints the status of the last command executed and the last command executed is an assignment (a=b
) which should always return true, since the command did run successfully.
Can someone help me understand this behaviour?
bash subshell hadoop exit-code
bash subshell hadoop exit-code
New contributor
New contributor
New contributor
asked 3 mins ago
Shubham
1012
1012
New contributor
New contributor
add a comment |Â
add a comment |Â
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Shubham is a new contributor. Be nice, and check out our Code of Conduct.
Shubham is a new contributor. Be nice, and check out our Code of Conduct.
Shubham is a new contributor. Be nice, and check out our Code of Conduct.
Shubham is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f476644%2funexpected-value-of-when-using-subshell%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password