在 ruby 中格式化字符串
Format string in ruby
我有一个字符串和一个变量,我想在这个字符串中使用这个变量,所以它会在将它转换为字符串之前获取该值:
current_process_id = 222
ruby_command = %q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %s \n",);}};')
puts ruby_command
我试过了:
current_process_id = 222
ruby_command = %q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %s \n",);}};') % [current_process_id]
puts ruby_command
但是这是错误的:
main.rb:2:in `%': too few arguments (ArgumentError)
我试过了:
awk_check = %q(ps -x | awk '{if) + "(" + %q(~"ruby" && !=)
print_and_kill = %q({printf("Killing ruby process: %s \n",);{system("kill -9 ")};}};')
ruby_process_command = awk_check + current_process_id.to_s + ")" + print_and_kill
puts ruby_process_command
这对我来说很好用。但是我做的方式不干净
我正在寻找更简洁的方法。
在您的 ruby_command 变量中,您声明了两个位置参数(%d 和 % s),而你只传递一个值 [current_process_id]。您还需要为 %s.
传递第二个值
将您的代码更改为:
current_process_id = 222
ruby_command = %q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %s \n",);}};') % [current_process_id,current_process_id.to_s]
puts ruby_command
输出:
ruby_command
=> "ps -x | awk '{if(~\"ruby\" && != 222 ){printf(\"Killing ruby process: 222 \n\",);}};'"
如果不想显示数值,只想显示"%s",可以直接用%%转义:
ruby_command = %Q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %%s \n",);}};') % [current_process_id]
输出:
ruby_command
=> "ps -x | awk '{if(~\"ruby\" && != 222 ){printf(\"Killing ruby process: %s \n\",);}};'"
我有一个字符串和一个变量,我想在这个字符串中使用这个变量,所以它会在将它转换为字符串之前获取该值:
current_process_id = 222
ruby_command = %q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %s \n",);}};')
puts ruby_command
我试过了:
current_process_id = 222
ruby_command = %q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %s \n",);}};') % [current_process_id]
puts ruby_command
但是这是错误的:
main.rb:2:in `%': too few arguments (ArgumentError)
我试过了:
awk_check = %q(ps -x | awk '{if) + "(" + %q(~"ruby" && !=)
print_and_kill = %q({printf("Killing ruby process: %s \n",);{system("kill -9 ")};}};')
ruby_process_command = awk_check + current_process_id.to_s + ")" + print_and_kill
puts ruby_process_command
这对我来说很好用。但是我做的方式不干净
我正在寻找更简洁的方法。
在您的 ruby_command 变量中,您声明了两个位置参数(%d 和 % s),而你只传递一个值 [current_process_id]。您还需要为 %s.
传递第二个值将您的代码更改为:
current_process_id = 222
ruby_command = %q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %s \n",);}};') % [current_process_id,current_process_id.to_s]
puts ruby_command
输出:
ruby_command
=> "ps -x | awk '{if(~\"ruby\" && != 222 ){printf(\"Killing ruby process: 222 \n\",);}};'"
如果不想显示数值,只想显示"%s",可以直接用%%转义:
ruby_command = %Q(ps -x | awk '{if(~"ruby" && != %d ){printf("Killing ruby process: %%s \n",);}};') % [current_process_id]
输出:
ruby_command
=> "ps -x | awk '{if(~\"ruby\" && != 222 ){printf(\"Killing ruby process: %s \n\",);}};'"