Fish-shell: eval $ argv рддрд░реНрдХреЛрдВ рдХреЛ рдЕрдирдкреЗрд░реНрд╕ рдХрд░рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЬрдире░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: fish-shell/fish-shell

  • [x] рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЬрд╛рдБрдЪ рдХреА рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╕рдорд╕реНрдпрд╛ реи.рек.реж рдХреЗ рд╕рд╛рде рд╣реЛрддреА рд╣реИ?
  • [x] рддреГрддреАрдп-рдкрдХреНрд╖ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛ рдордЫрд▓реА рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ ( sh -c 'env HOME=$(mktemp -d) fish' рдЬрд╛рдБрдЪ рдХрд░реЗрдВ) ?

рдордЫрд▓реА рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд ( fish --version ) : 2.4.0

OS / рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ : OSX 10.12.2 (16C67) / iTerm2 Build 3.0.13

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

#!/usr/bin/env ruby
p ARGV

рдФрд░ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

> ./myscript.rb foo 'hello world'
["foo", "hello world"]

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЛ рдПрдХ рддрд░реНрдХ рдмрдирд╛рдо "рд╣реИрд▓реЛ" рдФрд░ "рд╡рд░реНрд▓реНрдб" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдм, рдореИрдВ рдПрдХ рдлрд┐рд╢ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдЬреЛ рдореБрдЭреЗ рдХреБрдЫ рдИрдПрдирд╡реА рд╡рд░реНрдЬрди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдордирдорд╛рдиреЗ рдлрд┐рд╢ рдХрдорд╛рдВрдб (рдПрд▓рд┐рдпрд╛рд╕реЗрд╕ рд╕рд╣рд┐рдд) рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ

function debug
  set -xg DEBUG 1
  eval $argv
  set -e DEBUG
end

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдКрдкрд░ рд╕реЗ рдЕрдкрдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

> debug ./myscript.rb foo 'hello world'
["foo", "hello", "world"]

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХрд▓ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рддрд░реНрдХ "рд╣реИрд▓реЛ" рдФрд░ "рд╡рд░реНрд▓реНрдб" рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛, рдЬреЛ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдореИрдВрдиреЗ рднреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ:

env DEBUG=1 fish -c "$argv"

рдЬреЛ рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ $argv "рд╣реЗрд▓реНрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЛ рд╕рдореВрд╣реАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рдореИрдВ рдХреНрдпрд╛ рдЦреЛ рд░рд╣рд╛ рд╣реВрдБ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдк string escape , рдЕрд░реНрдерд╛рдд eval (string escape -- $argv) рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрд╣ eval рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "$ argv" рдирд╣реАрдВред

eval рдЕрдкрдиреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рддрд░реНрдХ рдХреИрд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рд╣рдо рдкрд╣рд▓реЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдо рд╕рд╣рдорддрд┐ рдереА рдХрд┐ рд╣рдо рдЕрдм рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЛ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдо рдЬреЛ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ # 154 рдореЗрдВ рд╣реИ - command рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк command $argv рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрд╕реЗ рдЪрд▓рд╛рдПрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдк string escape , рдЕрд░реНрдерд╛рдд eval (string escape -- $argv) рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рджред (string escape -- $argv) рдХрд╛рдо рдХрд┐рдпрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

mqudsi picture mqudsi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

spacekookie picture spacekookie  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yqiang picture yqiang  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gawells picture gawells  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pluckytree picture pluckytree  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ