Skip to content

Instantly share code, notes, and snippets.

@d630
Last active November 3, 2016 00:38
Show Gist options
  • Save d630/bc55b314af2e2065c7735749724ae98b to your computer and use it in GitHub Desktop.
Save d630/bc55b314af2e2065c7735749724ae98b to your computer and use it in GitHub Desktop.
bash: tmp variables while using declare -x +x
unset -v x y r
x=5 y=2 r="$x*$y*2" \
declare -x +x -i r;
declare -p x y r
@d630
Copy link
Author

d630 commented Aug 30, 2016

In GNU bash, version 4.3.46(1)-release (x86_64-pc-linux-gnu) I get:

bash: declare: x: not found
bash: declare: y: not found
declare -i r="20"

@d630
Copy link
Author

d630 commented Nov 3, 2016

Some other stuff:

% ( r='r[1]=2,r[2]=3,r[0]=1' declare -x +x -i r=(); declare -p r ); \
( r='r[1]=2,r[2]=3,r[0]=1' declare -x +x -i r=([0]=); declare -p r ); \
( r='r[2]=3,r[1]=2,r[0]=1' declare -x +x -i r; declare -p r; );
declare -ai r=([0]="1" [1]="2" [2]="3")
declare -ai r=([0]="1" [1]="2" [2]="3")
declare -ai r=([0]="1" [1]="2" [2]="3")

% ( r='foo bar' declare -x +x -a +a r=(); declare -p r ); \
( r='foo bar' declare -x +x r=([0]=); declare -p r );
declare -a r=([0]="")
declare -a r=([0]="foo bar")

% ( r='foo bar' declare -x +x -A +A  r; declare -p r ); \
( r='foo bar' declare -x +x -A +A  r=(); declare -p r ); \
( declare -A r; r='foo bar' declare -x +x +A r; declare -p r );
declare -- r=\`z"
declare -A r=([0]=$'\bhz\001' )
declare -A r=([0]="foo bar" )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment